package com.jxtc.enterprise.common.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.time.LocalDateTime;

@Getter
@Setter
@ToString
@TableName(value = "order_detail")
public class OrderDetail {
    /**
     * uuid
     */
    @TableId(type = IdType.ASSIGN_UUID)
    private String id;
    /**
     * 订单 ID
     */
    private String orderId;
    /**
     * 用户 ID
     */
    private String userId;
    /**
     * 用户手机号，order_payment 表中已有该数据，没必要在 order_detail 表中维护这个字段的信息
     */
//    private String phone;
    /**
     * 用户取餐时所用的名称
     */
    private String username;
    /**
     * 取餐地址
     */
    private String pickupAddress;
    /**
     * 公司 ID
     */
    private String companyId;
    /**
     * 店铺 ID
     */
    private String storeId;
    /**
     * 菜品 ID
     */
    private String foodId;
    /**
     * 菜品规格，JSON 格式字符串
     * 并不是所有菜品都有规格，只针对有规格的菜品有意义
     */
    private String foodSpecification;
    /**
     * 出售价，单位为分
     */
    private Integer salePrice;
    /**
     * 商家合作价，单位为分
     */
    private Integer storePrice;
    /**
     * 菜品展示价格，单位分
     */
    private Integer showPrice;
    /**
     * 菜品份数
     */
    private Integer quantity;
    /**
     * 菜品状态，对齐订单状态
     * 1 待支付
     * 2 待发货
     * 3 待签收
     * 4 待评价
     * 5 已取消
     * 6 售后已处理（仅针对申请售后的订单由此状态）
     */
    private Integer status;
    /**
     * 小票上打印的菜品名称
     */
    private String foodPrintName;
    /**
     * 用户填写的备注（TODO: 这个字段是否放到 order_payment 表中更合适呢？）
     */
    private String note;
    /**
     * 取餐号
     */
    private Integer pickupCode;

    /**
     * 该菜品是 那个用餐时段的，商户小程序中根据用餐时段对要出餐的菜品进行归类
     */
    private String mealType;

    private String lockerBoxNo;

    /**
     * 货柜信息，JSON 字符串。包含：appId,  appKey, clientNo, cab, col
     */
    private String lockerInfo;

    /**
     * 创建时间，在创建时默认传值，不需要手动操作
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    /**
     * 更新时间，在更新时默认传值，不需要手动操作
     */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
